home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / zkick301 / zkick.doc < prev    next >
Text File  |  1997-11-28  |  10KB  |  267 lines

  1.  
  2.  
  3.     ZKick V3.01 -- Copyright (C) 1991 by Daniel Zenchelsky
  4.  
  5.         This program may be freely copied, as long as all copyright
  6.         notices are left intact and unchanged.
  7.  
  8. -----------------------------------------------------------------------------
  9.  
  10. Overview
  11. --------
  12.  
  13.     ZKick  is  a  Kickstart  2.0  kickfile loader, similar to KickIt by
  14. Bryce  Nesbitt, but with several advantages.  First of all, ZKick will work
  15. in ANY Amiga with a 512K or larger ram board at ANY (*) memory location, no
  16. matter which slot it's in.  Second, when ZKick loads Kickstart, it survives
  17. a  reboot!  When you hit CTRL-AMIGA-AMIGA, you are placed back in Kickstart
  18. 2.0.  This feature can be disabled with the "-die" option.
  19.  
  20.     ZKick  3.0  is  now able to relocate Kickstart 2.0 V37.175 to *ANY*
  21. location.   It  no  longer  requires  ram  at  $200000.  If you are using a
  22. previous  version  of  Kickstart,  ZKick  can  not  relocate  Kickstart and
  23. therefore you must have a 512K or greater ram board at $200000.
  24.  
  25.     NOTE:   If  you place Kickstart in the middle of a ram board, ZKick
  26. will  divide the ram board into two logical devices.  It will then tell you
  27. that it found more devices than physically exist.  This is OK.
  28.  
  29.     NOTE:   ZKick  is  only  useful  for  developers  who have an Amiga
  30. 500/2000  kickfile  from Commodore.  It will NOT work with a 3000 Kickstart
  31. file.
  32.  
  33.     (*)  Due  to  the  nature  of  BCPL, Kickstart 2.0 must be longword
  34. aligned.
  35.  
  36. Theory of operation
  37. -------------------
  38.  
  39.     ZKick  works  by  building  a  table  of  expansion  devices  under
  40. Kickstart  1.3  (1.2),  adding  a  ROMTag  to  the  resident list, patching
  41. ColdCapture  and  CoolCapture, loading Kickstart 2.0 into memory at $200000
  42. and  reseting  the  machine.   When  1.3 starts up, the ColdCapture routine
  43. skips  the >512k chip ram test normally done by exec.  Normally exec clears
  44. all  of  chip  ram if it finds more than 512k of it.  Then, the ColdCapture
  45. routine  patches  exec  to  keep it from stomping on the first few bytes of
  46. memory at $200000.  Expansion library (still under 1.3) then configures all
  47. of  the  AutoConfig  devices.   Next, our ROMTag is executed, which detects
  48. that it is still under 1.3 and jumps to the start of Kickstart 2.0.
  49.  
  50.     Now  we're  running  under Kickstart 2.0.  Expansion library is the
  51. first  thing  executed,  but  it doesn't find any expansion devices because
  52. they  were all configured by the 1.3 expansion library.  Then the ROMTag is
  53. again executed.  It adds all of the expansion devices previously configured
  54. by 1.3 expansion library to the 2.0 expansion library's ConfigDev list, and
  55. all  of  the  memory boards to exec's memory list.  From here on the normal
  56. startup is taken, during which each board is initialized.
  57.  
  58.  
  59. Requirements
  60. ------------
  61.  
  62.     Setup A:
  63.  
  64.         1)  Using Kickstart 2.0 V37.175
  65.         2)  Total memory must be 1.5M or greater.
  66.         3)  There must be a 512k or greater ram board.
  67.  
  68.     OR
  69.  
  70.     Setup B:
  71.         
  72.         1)  Using Kickstart 2.0 V37.175
  73.         2)  Total memory must be 1M or greater.
  74.         3)  There must be a 512k or greater ram board at $C00000
  75.             (for example, an A501)
  76.  
  77.     OR
  78.  
  79.     Setup C:
  80.  
  81.         1)  Using another version of Kickstart 2.0
  82.         2)  Total memory must be 1.5M or greater.
  83.         3)  There must be a 512k or greater ram board at $200000
  84.  
  85. Usage
  86. -----
  87.  
  88.     ZKick [options] kickfile
  89.  
  90.  
  91. Options
  92. -------
  93.  
  94.     The  "-v175"  option  enables Kickstart relocation.  If you are not
  95. using  Kickstart  V37.175,  DO  NOT  USE  THIS  OPTION!   If  you are using
  96. Kickstart  V37.175,  you  must put this option before the "-c0" or "-start"
  97. option.
  98.  
  99.     NOTE:   In  order to relocate Kickstart 2.0 V37.175, I have created
  100. my  own  tools for determining all of the necessary relocation offsets, and
  101. included  the  proper  offsets  for V37.175 in ZKick.  Although I am 99.99%
  102. sure that these are the correct offsets, they are in no way "official," and
  103. I  can  not and will not be held liable for any damage cause by using them.
  104. IF  YOU  USE  THE  "-v175"  OPTION, YOU DO SO AT YOUR OWN RISK.  However, I
  105. strongly  believe  that  these  offsets  are  correct,  and if you have any
  106. problems, please let me know.
  107.  
  108.     The  "-start  <hex  address>" option allows the user to specify the
  109. starting  location of Kickstart.  You must have at least 512k of ram at the
  110. specified  address.   This  option  requires the "-v175" option, and is not
  111. compatible with the "-c0" option.
  112.  
  113.     The "-c0" option is used to load Kickstart into $C00000 memory, and
  114. will allow ZKick to be used on a 1 meg machine.  Before using this command,
  115. you  must  remove  $C00000  ram  from  the  memory list by using "NoC0Ram."
  116. Specifically,  it  has the following effects:  1) sets the start address to
  117. $C00000,  2)  doesn't check for ram at $C00000, 3) loads Kickstart directly
  118. into  $C00000  with  no  buffering,  and 4) patches Kickstart 2.0 to ignore
  119. $C00000  ram.   This  option  requires  the  "-v175"  option,  and  is  not
  120. compatible with the "-start" option.
  121.  
  122.     The  "-debug"  option  will  let  you  see  all  kinds of debugging
  123. information.
  124.  
  125.     The  "-print"  option  will  cause  ZKick  to  dump  more debugging
  126. information to the printer.
  127.  
  128.     The  "-die" option is used to tell ZKick not to survive reboots, so
  129. that when the machine is reset, the Kickstart ROM will be run instead.
  130.  
  131.     The  "-mmu" option will cause ZKick to reset the MMU, if it exists.
  132. *NOTE* This is different than the previous versions.
  133.  
  134.     The  "-noreset"  option  causes ZKick to skip the initial RESET and
  135. just jump into Kickstart.  This option is useful with some GVP boards which
  136. do not pass the RESET signal properly.
  137.  
  138.     The  "-nochecksum"  option will keep ZKick from going to 1.3 if the
  139. Kickstart checksum is not valid.
  140.  
  141. (Using  the  options  "-noreset" and "-nochecksum" together will make ZKick
  142. behave as it did in version 2.01)
  143.  
  144.  
  145. KillZKick
  146. ---------
  147.  
  148.     Also  included  is  the program KillZKick.  KillZKick removes ZKick
  149. from memory, and reboots the system with the Kickstart ROM.
  150.  
  151. NoC0Ram
  152. -------
  153.  
  154.     NoC0Ram  is  a  utility  which  removes $C00000 ram from the memory
  155. list.   In order to do this, the machine is REBOOTED.  
  156.  
  157.     YOU MUST USE NOC0RAM BEFORE LOADING KICKSTART INTO $C00000 RAM.
  158.  
  159.     It  is  necessary  to  remove  this ram from the memory list before
  160. using  ZKick,  because if it is not removed, exec.library will put ExecBase
  161. into it, and ExecBase will then be erased when ZKick loads Kickstart.
  162.  
  163.     NoC0Ram  will  only  reboot  the  system  if  you are running under
  164. 1.2/1.3  and  if exec believes there is $C00000 ram.  Therefore, it is safe
  165. to  put  in your startup-sequence, without fear of it continually rebooting
  166. the system.
  167.  
  168. Troubleshooting
  169. ---------------
  170.  
  171.     If  you  can't get ZKick to work, make sure you're using a 500/2000
  172. version  of  Kickstart,  version  36.141  (Release 2.0) or higher.  Try the
  173. following things before contacting me:
  174.  
  175.     1) Try using "ZKick -noreset Kickfile"
  176.  
  177.     If  this  fails,  set up your printer correctly and use the command
  178. "ZKick  -debug  -print Kickfile." Mail me a copy of the output along with a
  179. COMPLETE  description of your hardware configuration, and hopefully I'll be
  180. able to determine the problem.
  181.  
  182.  
  183. Reaching me
  184. -----------
  185.  
  186.     I   can   be   reached   on  Bix  as  dzenc,  on  the  internet  as
  187. dzenc@gnu.ai.mit.edu, or on bitnet as dzenc%gnu.ai.mit.edu@mitvma.bitnet.
  188.  
  189.  
  190. Special thanks to
  191. -----------------
  192.  
  193.     Dan Babcock for sending me an excellent article that he wrote which
  194. showed  how  to  set up RomTag modules correctly, as well as his many ideas
  195. for bug fixes and improvements.
  196.  
  197.     Dave Haynie, for the MMU code which I pilfered from SetCPU.
  198.  
  199. And my beta testers:
  200.  
  201.     Martin Allred
  202.     Joanne Dow
  203.     Frank Edwards
  204.     Valentin Pepelea
  205.     Erik Quackenbush
  206.     Mike Thomas
  207.     
  208. Apologies to anyone I missed.
  209.  
  210.  
  211. History
  212. -------
  213.  
  214.     ZKick 3.01 fixes several MAJOR bugs that were in ZKick 3.0.
  215.  
  216.     ZKick 3.00 allows full relocation of Kickstart 2.0 V37.175, and now
  217. works on 1 Meg machines.
  218.  
  219.     ZKick  2.31  now  properly  chains the KickTag and KickMem vectors.
  220. This should increase compatibility with other boot surviving programs.
  221.  
  222.     ZKick  2.30 does a version check in its ColdCapture and CoolCapture
  223. routines.  Before, it relied on the fact that they were only executed under
  224. 1.2/1.3.
  225.  
  226.     ZKick  2.24  hopefully  fixes the mmu code!  Now it should properly
  227. clear  the mmu IF you use the "-mmu" option.  Thanks to Christian Schneider
  228. for picking up my silly error.
  229.  
  230.     ZKick  2.23 adds support for delayed GURUs.  Normally, exec pokes a
  231. "HELP"  into  location  0,  stores the GURU info at $0100, and restarts the
  232. machine.   When  exec  is  restarted,  it  checks location zero for "HELP,"
  233. stores  the GURU info in ExecBase, and clears location 0.  Later, exec pops
  234. up  an  alert.   The problem is that ZKick starts Kickstart 2.0 before exec
  235. gets  a  chance  to display the alert.  ZKick now checks for a delayed GURU
  236. and pokes "HELP" back into location 0 before starting Kickstart 2.0.
  237.  
  238.     ZKick 2.22 changes the default behavior to NOT reseting the mmu, as
  239. many  people  said  that  they  couldn't get it to work on 020/030 machines
  240. unless this option was off.
  241.  
  242.     ZKick  2.21 adds the "-print" option.
  243.  
  244.     ZKick  2.20 adds many new command line options.
  245.  
  246.     ZKick  2.10b  fixes  a problem which caused ZKick to configure each
  247. device twice.
  248.  
  249.     ZKick  2.10a  fixes  a  typo  in Zkick 2.10, which caused it not to
  250. recognize an MMU ('=' instead of '==').
  251.  
  252.     ZKick  2.10  employs better error checking.  In addition, if an MMU
  253. exists, it clears it before starting 2.0.
  254.  
  255.     ZKick  2.01  fixes  a  bug which caused ZKick not to work with most
  256. autoboot controllers.
  257.  
  258.     ZKick  2.0 is the first "public" release.
  259.  
  260. -Dan
  261.  
  262. -----------------------
  263.  
  264. P.S.  This is my first attempt at assembler programming on the 68000.
  265.       I hope you enjoy the results!!!
  266.  
  267.